def combine(n: int, k: int):
    result = []
    path = []

    def backtrack(start):
        if len(path) == k:  # 找到一个组合
            result.append(path[:])
            return

        for i in range(start, n + 1):
            path.append(i)
            backtrack(i + 1)  # 递归选择下一个数
            path.pop()  # 回溯，撤销选择

    backtrack(1)
    return result

# 测试例子
n = 4
k = 2
print(combine(n, k))
